home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PRINTER / MERGIT21.ARJ / MERGEIT.DOC < prev    next >
Text File  |  1992-02-22  |  56KB  |  988 lines

  1.                                                                10 Feb  '92
  2.     DOCUMENTATION FOR MERGING HAND SCANNER IMAGES WRITTEN TO PCX FILES
  3.  
  4. Hand image scanners have become inexpensive and popular in the last few years
  5. for capturing printed images to computer graphic files. Typically the scanners
  6. can capture an image 3"-4" wide. MergeIt (TM) is designed to align and merge
  7. adjacent images captured with a hand scanner into PCX format files when the
  8. original printed image is greater than 3"-4". Images larger than a legal sized
  9. sheet (8.5"x14") may be captured into a single file with MergeIt.
  10. By making a simple frame + edge guide to scan images with, you can most easily
  11. automatically merge scanned sections of a document which are in the "PCX"
  12. image file format. Manual merging of hand scanner images is also possible.
  13. A number of user tools are available to effect a satisfactory alignment
  14. and merge.
  15.  
  16. The program MergeIt (TM) can merge scanned images together which are
  17. horizontally adjacent image sections. The actual merging, however, may be done
  18. horizontally or vertically-resulting in a composite image with a landscape or
  19. portrait orientation respectively. The composite image is displayed as it is
  20. built, enabling progressive user trimming in the critical merged regions.
  21.  
  22. With both automatic or manual merging, automatic trimming is available to
  23. correct small registration errors inherent in the hand image scanning process.
  24. This appears as a drift in alignment across merged image regions.
  25. Whole letter or legal sized page images can be built from hand scanned
  26. sections that are very nearly indistinguishable from the whole page
  27. flat-bed scanners.
  28.  
  29. MergeIt will display the merged image regions on Hercules, EGA, and VGA video
  30. systems.
  31.  
  32. The automatic merge process will be most successful if a mechanical straight
  33. edge is used on the left side to guide the hand scanner. In particular, any
  34. twisting of the scanner will distort the image in ways that no software can
  35. correct. With a modest amount of preparation, MergeIt will make full page
  36. documents that are readily faxable or importable into painting and drawing
  37. programs that use the PCX format.
  38.  
  39. The shareware version of MergeIt is limited to merging 2 image sections
  40. and the merged output image file is named "ImageOut.PCX".
  41. The registered version of MergeIt will merge up to 5 image sections and
  42. does not restrict the output file name. See "Register.Txt".
  43.  
  44.                    Scanning SetUp-Physical Orientation
  45.  
  46. *** See "Frame.Doc" for more information on building a scanning frame. ***
  47.  
  48. In this documentation, scanned image sections will be described as being
  49. generated by moving your hand scanner from the top to the bottom of a frame
  50. which holds the image being scanned. Adjacent image sections are left and
  51. right of each other (NOT above and below). Merging occurs along the vertical
  52. edges of adjacent sections. Image section #1 is on the right.
  53.  
  54.                         Original Image To Scan
  55.                     _________________________________      Scan in vertical
  56.                     | .........   .       ..       . |       columns, from
  57.                     |       .       .   .    .   .   |         top to
  58.                     |     .           .        .     |            |
  59.                     |   .             .      .   .   |           \|/
  60.                     | .........       .    .       . |          bottom
  61.                     ---------------------------------
  62.  
  63.         ____________           ___________           ___________
  64.        | .........  |    M    | .       . |    M    | .       . |
  65.        |       .    |    E    |   .   .   |    E    |   .   .   |
  66.        |     .      | -> R <- |     .     | -> R <- |     .     |
  67.        |   .        |    G    |     .     |    G    |   .   .   |
  68.        | .........  |    E    |     .     |    E    | .       . |
  69.        --------------         -------------         -------------
  70.           Image 3                Image 2               Image 1
  71.  
  72. The image may be in a portrait or landscape orientation. Reference blocks (see
  73. next section) are at the top edge of the image, the regions to be cut and
  74. merged are at the left and right sides of the scanned image. The top and
  75. bottom image edges just need to be cut. The image is scanned right to left,
  76. with the scanned image file numbering starting on the right. (If the image
  77. scanned is an ordinary sheet of text laid on its side in landscape
  78. orientation, the top of the text should be on the right). MergeIt works with
  79. B&W PCX files-if your hand scanner can make gray scale PCX files, then make
  80. sure to set it to the B&W mode (sometimes called the line art or high
  81. contrast setting).
  82.  
  83. Automatic merging of scanned image sections is dependent on the detection and
  84. measurement of black reference blocks on the top edge of the scanned image
  85. sections, just above the printed image to be merged, and within 1.5" of the
  86. left and right edges. These black blocks must exist on a white background to
  87. enable clean detection. "Frame.Doc" gives more information on how to set this
  88. up.
  89.  
  90. Using MergeIt becomes more natural with a little practice. Since it is an
  91. unusual mixture of mechanical setup and software, give yourself some time
  92. to become fluent in adjusting and using it. The reward of having full sized,
  93. merged images from almost any printed source for the modest cost of a hand
  94. scanner (and MergeIt!) will make it worthwhile.
  95. Enjoy!
  96.  
  97.       Image Analysis for Locating Reference Blocks-Automatic Merging
  98.  
  99. The top 1.0" of the scanned image is analyzed for left and right reference
  100. blocks within 1.5" of the left and right edges. The detected reference blocks
  101. must have a minimum height of 0.1" to be valid. (See "Frame.Doc" for hints on
  102. how to assure this). If a reference block height is insufficient, the
  103. resultant merge will be unsatisfactory. This can be verified by running
  104. MergeIt with the reference block analysis display feature on. (See Msec-Dbug
  105. variable in the Initial Values File.)
  106. During calculations, the bottom 0.01" of each block is ignored and the above
  107. 0.08" of the blocks are used to calculate critical left and right block edges
  108. and block widths. The bottom 0.01" is skipped to avoid averaging spurious
  109. partial block image lines.
  110.  
  111.  Methods of Cutting and Merging the Vertical Left and Right Edges of Images
  112.  
  113. Each scanned image section has one line of parameters in the Initial Values
  114. File which defines how to cut and merge it. (Initial Values File described
  115. below).
  116. The left edge of a scanned image is always processed the same way. The left
  117. edge of the left top reference block acts as a vertical cutting line; the
  118. image is cut with respect to this. The user may specify an offset from this
  119. line. Even if no offset is desired, an entry in the Initial Values File
  120. must be made (of "0.0").
  121. The right vertical edge may be cut in one of three ways, specified in the
  122. initial values file. The 1st non-zero entry (after the offset)
  123. determines which method to use, starting with "a" below. If all 3 entries
  124. are "0.0" then the third method will be used.
  125.  
  126. a) The simplest is a simple cut determined by a user-specified width with
  127. respect to the left cut line. This cut is usually done for the right-most
  128. scanned image since its right edge is also the edge of the document. In
  129. this case, the width is specified as the 2nd entry on line 6 in the
  130. initial values file.
  131. b) The most commonly used automatic merge method is probably by reference
  132. block merge. The method takes the width of the left reference index block
  133. located in the image to the right and then utilizes the width of the right
  134. block in the current image to calculate how to cut the right edge so that
  135. the width of the merged block across the seam is equal to the original block
  136. width (which is user specified). For each image section you wish to merge
  137. this way, the reference block width is the 3rd entry on the corresponding
  138. line in the initial values file.
  139. c) The 3rd method is a mirror image of the way the left edge is cut. The
  140. right edge of the right reference block determines a vertical cutting line.
  141. The user may specify an offset from this. This method might be useful if
  142. you have a page of text in narrow columns (such as a magazine). Using a right
  143. white edge while scanning will cause a clean cut and merge of the adjacent
  144. text columns.  For each image section you wish to merge this way, the
  145. offset is the 4th entry on the corresponding line in the initial values file.
  146.  
  147.                   Top and Bottom Cutting of Images
  148.  
  149. The top cutting line of an image is determined from the bottom edge of the
  150. reference blocks.  If one block is lower than the other, it determines the
  151. edge.
  152. The height of the cut image is user specified and is calculated in one of
  153. two ways:
  154.   a) Ordinarily it calculated downwards from this top cutting line.
  155.   b) If the height is specified as a non-positive number, then the height
  156.      is interpreted as the dimension (in inches) to cut up from the bottom of
  157.      the rightmost scanned image section. The composite image height is then
  158.      the distance from the top cutting line to this shifted bottom line.
  159.      The additional scanned image sections to the left are cut to match
  160.      this height.
  161.  
  162.                 Command line switches (optional)
  163. 1) File name (with path if necessary) of initial values file. Ex:/image3.ini
  164. 2) Merged image filename to override the name specified in the initial values
  165.    file.
  166.  
  167.       Ex: MergeIt /d:\paint\eschrB.ini /printA.pcx
  168.  Use the initial values file "eschrB.ini" in the directory "d:\paint"
  169.  and call the merged image file "printA.pcx".
  170.  
  171.  
  172.                        Initial Values File
  173.  
  174. MergeIt requires an initial values file, written as a simple ascii text
  175. file, to run. Since there are a number of sample initial values files included
  176. to use with MergeIt, you need not understand all these parameters before
  177. running MergeIt.
  178.  
  179. *** Before trying to understand these entries and their meaning, I ***
  180.     suggest you look at "Frame.Doc"  (if you haven't already) for
  181.     a physical orientation on automatic merging.
  182.     In addition, you might want to see the line by line image
  183.     analysis described in the latter part of "Tutor.Txt".
  184.     You also might want to look at enclosed sample initial values files:
  185.       a) To automatically merge:  EschrB.Ini
  186.       b) To manually merge: Manl50.Ini, Manl80.Ini, Manl-01.Ini, Eschr-01.Ini
  187.  
  188. Line by line description:
  189.  (line indices are for description only, do NOT include in actual file)
  190.  {Starting on line 5, all floating point numbers are inches,
  191.   + is in the left direction when specifying left/right offsets, in the down
  192.   direction when specifying down/up offsets }
  193.  {spacing between numbers is not important-I space them in logical groupings}
  194.  
  195. 1)Scan#.PCX           {Scanned Image Filename, "#" denotes increment position
  196.                        in name, scanned images move from right=>left}
  197.  
  198. 2)1 3                 {Index to start input files at, number of images to
  199.                        merge i.e. scan1.pcx, scan2.pcx, scan3.pcx }
  200.  
  201. 3)PageOut.PCX         {Merged Image Filename to use}
  202.  
  203. 4)25  12  0    1 3    {First 3 parameters affect automatic merging:
  204.                        a) Dark Threshold (maximum % of dots that can be white
  205.                           in the averaging of dot segments, in this case up to
  206.                           3 out of 12 dots could be white),
  207.                        b) Number of Dots to use in averaged dot segments,
  208.                           a number <2.0 is interpreted as a dimension in
  209.                           inches to average (and the appropriate number of
  210.                           dots are calculated). If an odd number of dots is
  211.                           specified, it is incremented to an even number.
  212.                           Enter 0 to defeat automatic merging.
  213.                        c) millisecs to view each line of analysis, called
  214.                           Msec-Debug, see below}
  215.  
  216.                       {Next 2 parameters affect automatic trimming:
  217.                        a) Alignment improvement threshold. Within each group
  218.                           of 16-20 image lines being shifted along a merge
  219.                           boundary, this threshold is the improvement
  220.                           (in number of lines aligned) that must occur
  221.                           for a shift to be implemented (instead of doing
  222.                           no shifting). Typically set to 1. Setting to
  223.                           a negative number will cause MergeIt to initialize
  224.                           auto trimming but turn it OFF (which may be later
  225.                           turned on by the user). In this case the threshold
  226.                           value is the magnitude of the negative number
  227.                           (i.e. without the negative sign).
  228.                           Setting the threshold to 0 will prevent any auto
  229.                           trimming.
  230.                        b) Maximum rotated image alignment shift:
  231.                           This value only affects auto trimming when the
  232.                           user chooses to rotate the image as it is merged.
  233.                           It defines the maximum shift along a merge boundary
  234.                           that a group of 16 images lines will make in an
  235.                           effort to improve alignment. Acceptable values
  236.                           are 1 to 9. (Typically set to 3.)
  237.                           Note that this value must be included even when
  238.                           unrotated merging is to be performed.
  239. 5)0.0  8.4 4.0 3.5    General image cutting values:
  240.                       {a) Top edge offset to trim down from for all image
  241.                           sections,
  242.                        b) height of outputted merged image,
  243.                           (if < 0.0 then becomes the amount to cut up from
  244.                            the bottom of the rightmost image section)
  245.                        c) scanned image width,
  246.                        d) spacing between reference blocks}
  247. 6)0.0  3.5 0.0 0.0  0.0
  248.                      Values for cutting and merging the first scanned image
  249.                      (the rightmost image):
  250.                     {a) Inches to trim left image edge, with respect to
  251.                          straight edge white/black boundary of left
  252.                          reference block
  253.                      b) Width to cut image at right edge. (If <0.0 then
  254.                         this value becomes the amount to cut in from the
  255.                         right edge of this image section.) If this value
  256.                         is 0.0 then the program will cut the right edge
  257.                         by the next method and value ("c")
  258.                      c) Set right edge to merge with adjacent image on
  259.                         the basis of total width of black index block which
  260.                         is read here. The width is determined by the frame
  261.                         setup you use. If this value is 0.0 then the program
  262.                         will cut the right edge by the next method
  263.                         and value ("d")
  264.                      d) Cut right edge on the basis of the black/white
  265.                         boundary. Use this number of inches to shift left/
  266.                         right from boundary. This value may be 0.0
  267.                      e) Top Line Offset for this image only. To be added to
  268.                         global offset above.}
  269.  
  270. 7)0.0  0.0 1.0 0.0   0.0
  271.                      Values for cutting and merging the next scanned image
  272.                      (to the left of the above image):
  273.                     {a) Inches to trim left image edge, with respect to
  274.                         straight edge white/black boundary
  275.                      b) Width to cut image at right edge.(If <0.0 then
  276.                         this value becomes the amount to cut in from the
  277.                         right edge of this image section.) If 0.0 then
  278.                         program will cut the right edge by the next
  279.                         method and value ("c")..
  280.                      c) Set right edge to merge with adjacent image on
  281.                         the basis of total width of black index block which
  282.                         is read. The total width is determined by the
  283.                         frame setup you use. If 0.0 then program will
  284.                         read next value..
  285.                      d) Cut right edge on the basis of the black/white
  286.                         boundary. Use this number of inches to shift left/
  287.                         right from boundary. This value may be 0.0
  288.                      e) Top Line Offset for this image only. To be added
  289.                         to global offset on line 5.}
  290.  
  291. 8)0.0   0.0 1.0 0.0   0.0
  292.                      Values for cutting and merging the next scanned image
  293.                      (to the left of the above image):
  294.                     {a) Inches to trim left image edge, with respect to
  295.                          straight edge white/black boundary
  296.                      b) Width to cut image at right edge. (If <0.0 then
  297.                         this value becomes the amount to cut in from the
  298.                         right edge of this image section.) If 0.0 then
  299.                         move on to (c)..
  300.                      c) Set right edge to merge with adjacent image on
  301.                         the basis of total width of black index block which
  302.                         is read. Set value from frame setup. If 0.0
  303.                         then move on to..
  304.                      d) Cut right edge on the basis of the black/white
  305.                         boundary. Use this number of inches to shift left/
  306.                         right from boundary.
  307.                      e) Top Line Offset for this image only. To be
  308.                         added to global offset on line 5.}
  309.  
  310. Display of image line analysis (Msec-Debug):
  311. The value of Msec-Debug determines how much reference block analysis
  312. is displayed.  If Msec value=1, then a summary of each image's analysis is
  313. displayed after all lines in an image section are analyzed.
  314. If  Msec value is >1, then the individual line analysis
  315. is shown for the # of Millisec specified in addition to the previous
  316. information.
  317. If Msec value=0, then only the actual image sections will be
  318. displayed for user trimming. If Msec value is < 0, then image viewing and
  319. user trimming will be bypassed. The image will be simply automatically
  320. merged on the basis of the reference block analysis.
  321.  
  322.  
  323.                  Error Messages When Running MergeIt
  324.  
  325. Errors may be divided into 3 groups: system, input and analysis, and cutting.
  326.  
  327. System: the program will halt
  328. If there isn't enough memory to run the program (the program grows somewhat
  329. in size as more images must be merged).
  330. If an initial values file or image file is not found.
  331. If there is no more disk space to store a combined image file.
  332.  
  333. Input and Analysis: the program will halt
  334. If the initial values file has invalid numerical entries.
  335. If the image files do not appear to be PCX files.
  336.  
  337. If the image files do not appear to be PCX hand scanner files, you will be
  338. able to correct this. The most common scanner image file error is to not have
  339. proper dot per inch (dpi) specifications. (The DFI scanner software seems to
  340. do this.) For PCX files, there is a horizontal and a vertical dpi
  341. specification. For a hand scanner image file, these two values should be equal
  342. and a multiple of 100. When reading the first of a series of PCX files to
  343. merge, if these two dpi specs are not equal then MergeIt will try to determine
  344. which value is correct and display its choice to you. If the choice is correct
  345. then press "enter" (<cr>), otherwise input the correct dpi value (as a whole
  346. number) before <cr>. The remaining PCX files to merge will use this dpi value
  347. if these files also don't have proper dpi specifications.
  348.  
  349. These reference block errors (if using automatic merging) will NOT cause
  350. the program to halt:
  351.  One or both reference blocks may not be detected in the top left and right
  352.  regions that the program analyzes. The left block is always required for
  353.  determining the left vertical cutting line. The right block is not important
  354.  if vertical cutting method 1 is used. Analysis will be finished more quickly
  355.  if a right block is detected. If it is excluded in your scanning setup, an
  356.  erroneous region of the image may be detected as a reference block and the
  357.  image section will be cut down too much from the top.
  358.  
  359.  The bottom edge of one or both reference blocks may never be reached within
  360.  the limits of the top region which program analyzes.
  361.  
  362. Cutting
  363. After determining the desired boundaries for the cut image, including any user
  364. offsets, the image available may be smaller than needed. This is most commonly
  365. the case if a user offset extends a cutting edge beyond the image. The program
  366. prompts you to approve cutting adjustments if image available is too small.
  367. If you do not approve of the adjustment, the program will halt.
  368.  
  369.           Special Input Image Considerations For Automatic Merging
  370.  
  371. Most documents to be scanned and merged will be on white/off-white paper and
  372. will be easily distinguished by the program from the reference blocks. This
  373. is necessary to determine the top edge of the cut image. If the document is
  374. too dark, a plain white border of 1/16" or more may tacked to the top of the
  375. document (perhaps by simply attaching a plain piece of paper to the back).
  376. The user may then specify a top edge offset to obtain the desired cut image.
  377.  
  378. If the document to be scanned is a simple page of full width text, then
  379. merging is straightforward.
  380. If the images' edges to be merged just contain adjacent lines of text or text
  381. and picture then you will probably get a very satisfactory merge the 1st time,
  382. automatically, without any user trimming.
  383. If you are attempting to merge a diagram or picture across image sections then
  384. you may sometimes find the automatic merge to be unacceptable. The strength of
  385. MergeIt is its absolute repeatability (if the same images and initial values
  386. file are used) and its predictability if the initial values file is changed
  387. with respect to user offsets. This allows you to make shifts in the merge
  388. process down to the single dot/line level. By keeping a record of small trim
  389. adjustments, you can make small corrections to the initial values file to
  390. improve the automatic merge process. MergeIt can NOT automatically compensate
  391. for the following scanned image error:
  392.  
  393.  a) One image is rotated with respect to the other. This is usually caused
  394.     by twisting the scanner unit while scanning. It can be corrected by using
  395.     a left vertical guide edge. A lower guide bar may be attached to the
  396.     scanner handle if necessary. No software can correct this.
  397.  
  398. The following scanned image error can not be dealt with by the automatic
  399. merging process but rather by use of the automatic trimming process:
  400.  
  401.  b) One image is shorter than the other and gets misaligned. While moving
  402.     the scanner, the tracking roller on the bottom got stuck or skipped.
  403.     Perhaps there is some dirt on it that is changing its diameter (and
  404.     therefore possibly changing the apparent distance being scanned).
  405.     Perhaps you moved over the image too quickly and lost proper
  406.     registration. Typically hand scanners show a dot registration
  407.     variability as they roll of 1 or 2 dots/inch. The steadier and more
  408.     repeatable the image scanning stroke, the better. MergeIt allows you to
  409.     view the merge process, use automatic trimming and manually trim the
  410.     images to compensate for this.
  411.  
  412. *** I strongly suggest that you introduce yourself to trimming images by ***
  413.                making use of the tutorial. Read "Tutor.Txt".
  414.     If you are more inclined to 'figure it out as you go', at least please
  415.                     read Quick StartUp in "Read.Me".
  416.  
  417.  
  418.                        Manual Image Merging
  419.  
  420. If you wish to not use the reference blocks to automatically merge, set the
  421. second parameter on line 4 of the initial values file=0 (# of dots to average
  422. when determining reference block coordinates). Merging will be done at
  423. the left extreme edge of each scanned section. The right edge of each merged
  424. section may be cut as it is in automatic merging by the 2nd parameter on
  425. the corresponding image parameter line (lines 6.. in the initial values file).
  426. If this parameter is set to 0.0 then the full width of the scanned image will
  427. be merged. Some sample manual merge initial values files are supplied.
  428. "Manl50.ini" and "Manl80.ini" are for image sections 5.0" and 8.0" in height,
  429. respectively. "Manl-01.ini" will merge varying height image sections by
  430. calculating the height of the right image section after cutting 0.1" from
  431. the bottom. They all merge image files named ImageA1.pcx and ImageA2.pcx.
  432.  
  433. To facilitate manual merging, it is important that the scanned image
  434. sections have sufficient extra around the edges to allow you to move
  435. sections to successfully merge. MergeIt always reserves at least 10 lines
  436. from each input image's bottom to assure enough movement to accomplish a
  437. merge. It is probably initially easier to manually merge an unrotated image
  438. (the display matches the physical orientation used while scanning). For
  439. unrotated merging, the height of each scanned image section should be
  440. somewhat more than the desired height of the composite image to assure
  441. enough upward movement. (Note that downward movement is not possible if a
  442. merged section starts at the top of a scanned image file). The user does
  443. have the option of performing upward movement past the lower edge of an
  444. input image. A black area will be added to the composite image as necessary
  445. to fill-in. This area may be removed from the composite by inserting lines
  446. at the bottom of the composite when this region is displayed.
  447.  
  448. Manual merging of a rotated image is somewhat limited due to the need to
  449. process rotated image regions. If the scanned image section is large enough,
  450. then an extra border of up to 16 dots is included around the rotated image
  451. region to merge. Therefore the maximum movement in any direction that includes
  452. more of an image section in the composite image is never more than 16 dots.
  453. If more movement is necessary, the rotated image region may be "pushed" left
  454. or right 8 dots at a time. The "empty" image area is filled in by 1 of 3
  455. methods: a) White dots b)Black dots c)Copy image edge adjacent to the area.
  456. Of course, you can also manually insert/delete lines on the left edge of an
  457. image to effectively move it to the right/left. Note that manual insert/delete
  458. modifications will NOT be seen by the automatic trimming process (described
  459. below).
  460.  
  461.                     VIEWING/TRIMMING MERGED EDGES
  462. Generally:
  463. Initial feedback of user trim commands is given through beeps. A single, short
  464. medium pitched beep indicates more feedback is necessary to finish a user
  465. trim operation. A double medium-high pitched beep indicates a completed
  466. trim operation. All image trim commands may be repeated before the modified
  467. image is processed and redisplayed. Entering a simple <cr> from the main menu
  468. terminates the trimming process and starts redisplay and/or merging. The end
  469. of user trimming and the restarting of image processing is signaled by a
  470. triple beep. A longer, low-pitched single beep indicates an error or trim/
  471. movement limit has been reached.
  472. Global shifts of one scanned image with respect to another is accomplished
  473. with the cursor keys. This movement is seen by the automatic trimming
  474. process.
  475. Internal scanned image adjustments (deleted/added lines and dots) are
  476. initiated with the insert/delete keys. For unrotated merging, up to 50
  477. insert/delete trim operations may be performed (and recalled if the merge
  478. process is restarted midway thru) . More operations may be performed as
  479. necessary if you are willing to erase the earliest ones. If rotated, up to
  480. 50 operations may be performed at each scanned image boundary between 2
  481. images. In this case the operations are performed on the lower image (as
  482. displayed on the screen). None of the user line insertion/deletion image
  483. modifications are seen by the automatic trimming process.
  484.  
  485.                 Rotated Image Trim Process & User Commands
  486.  
  487. The top and bottom margins of each rotated & scanned image will be displayed.
  488. 100 image lines will be displayed for each margin (i.e. 200 lines will be
  489. shown of each merged boundary area) and a short beep will sound
  490. after each margin is fully displayed. At this time  modifications are
  491. possible.
  492.  
  493. Top Edge Merging:
  494. The user can move the top edge of an image left or right up to 16 dots, image
  495. permitting. Note that the width of the image is maintained so that the motion
  496. limits may be less than 16 dots if the scanned image doesn't have this much
  497. extra border width. Note that an image can also be moved to the right or left
  498. by inserting or deleting lines at the left edge of the whole image. (This may
  499. require moving the left displayed view to the left one or more times.) The
  500. image to be merged may also be moved down by as much as 16 lines (again image
  501. border permitting). Moving this image down will cause more of this image to be
  502. included in the composite image. This image may also be moved up, cutting off
  503. more of this image at the merge boundary. There is no limit to this upward
  504. motion.
  505.  
  506.  
  507. Top Edge User Commands:
  508.  
  509. Cursor Up/Down: Will subtract/add lines to the top of the current image
  510.                 at the boundary with the previous image section's bottom edge.
  511.  
  512. Cursor Left/Right: Move the lower image left/right with respect to the above
  513.                    (previous) image section edge.
  514.  
  515. '1'..'9': Set size of image movement performed by cursor keys. Size is in
  516.           number of lines or dots the lower image is shifted by each cursor
  517.           key entry. Program starts with a value=1.
  518.  
  519. <Insert> (<Delete>): Insert (delete) dots at the marker location for all
  520.                      lines in the current displayed image section. A 2nd
  521.                      menu will appear:
  522.   Command options:
  523.    Home/End: Move marker 1/8 of image width to the left/right.
  524.    SpaceBar: Move marker 1 dot to the right.
  525.    BkSpace : Move marker 1 dot to the left.
  526.      '+'   : Make modification at marker location.
  527.      '-'   : Remove modification at marker location (or the first modification
  528.              to the right of the marker).
  529.    <cr> Esc: Exit the insert/delete operation.
  530.    'L' : Remove the left most entry in the catagory chosen
  531.    'R' : Remove the right most entry in the catagory chosen
  532.  
  533.    These 2 commands operate on both insert and delete entries (i.e. it does
  534.    not depend on which catagory you are in:
  535.    'U' : Remove all insert & delete entries from the currently viewed images.
  536.    'P' : Restore all insert & delete entries from the currently viewed images.
  537.          This reverses either user removal or automatic removal when a new
  538.          automatic merging process was initiated.
  539.  
  540. Cntl-Left/Right cursor (Hold down <Control> key while pressing cursor):
  541.     "Push" the image left/right (use this when you are at the movement limit
  542.     of the left/right cursor) by 8 dots. This is done by filling in the
  543.     necessary edge area by 1 of 3 methods:
  544.       a) Copy image edge to fill in area (default).
  545.       b) Fill area in white
  546.       c) Fill area in black
  547.  
  548. 'F' : Select the method to fill-in when "pushing" the image left/right.
  549.       A 2nd menu will come up only if you are currently "pushing".
  550.       The top line will display which of 3 fill-in methods is being used.
  551.       Command options:
  552.         'W': Fill-in area with white dots
  553.         'B': Fill-in area with black dots
  554.         'C': Copy image edge to fill-in area.
  555.         'U': Undo image "pushing".
  556.  
  557. <Alt-V>: Change a viewed image region. A 2nd menu will appear.
  558.          2 user choices must follow:
  559.           Choose: Home/End=>Select which viewed region to shift.
  560.                   Home is on the left, End is on the right.
  561.              Choose: Home/End=>Move the selected view region to the adjacent
  562.                      left/right section of the image.
  563.  
  564. <Alt-T>: Change automatic trimming parameters. A 2nd menu will appear.
  565.          See below.
  566.  
  567. <cr> : Ends user input command and executes desired action/refreshes display.
  568.  
  569. 'G' :  Continue merge process without viewing (only operates if no image
  570.        modifications are done).
  571.  
  572. 'H' :  Toggle display of general help menu with auto trim status. When
  573.        starting MergeIt, default is to display whenever possible. Toggle will
  574.        cause general help menu to display only when an inappropriate key is
  575.        pressed, auto trim status only when an auto trim parameter is changed.
  576.  
  577. Bottom Edge Trimming:
  578. The user may shorten the image up to 16 lines. The viewed areas of the image
  579. may be shifted left or right. There MAY be a few image lines to add to the
  580. initially viewed image. Essentially, trimming should be done to erase small
  581. sections of text or picture at the bottom edge. It is NOT possible to shift
  582. the bottom edge of the image left or right since the upper edge has already
  583. been merged to the previous scanned image and most of this image has been
  584. built. Once the next image is displayed below this edge, no more trimming at
  585. this edge will be possible.
  586.  
  587. Bottom Edge User Commands:
  588.  
  589. Cursor Up/Down: Will subtract/add lines to the bottom of the image displayed
  590.                 that will then be merged with the top edge of the next
  591.                 section.
  592.  
  593. '1'..'9':  Set size of image movement performed by cursor keys. Size is in
  594.            number of lines or dots the displayed image is shifted by each
  595.            cursor key entry. Program starts with a value=1.
  596.  
  597. <Alt-V>: Change a viewed image region. A 2nd menu will appear.
  598.          2 user choices must follow:
  599.           Choose: Home/End=>Select which viewed region to shift.
  600.                             Home is on the left, End is on the right.
  601.              Choose: Home/End=>Move the selected view region to the adjacent
  602.                                left/right section of the image.
  603.  
  604. <cr>: Ends user input command and executes desired action/refreshes display.
  605.  
  606. 'G' : Continue merge process without viewing.
  607.  
  608. 'H' : Toggle display of general help menu with auto trim status. When starting
  609.       MergeIt, default is to display whenever possible. Toggle will cause
  610.       general help menu to display only when an inappropriate key is pressed,
  611.       auto trim status only when an auto trim parameter is changed.
  612.  
  613.               Unrotated Image Trim Process & User Commands
  614.  
  615. Each output image line is made up of image lines from all scanned sections.
  616. Therefore some changes of image merging require that the merging process
  617. restart from the beginning.
  618. Initially, the right most 2 merge regions are shown, with the vertical
  619. boundary between the sections centered. A marker is shown below the
  620. right region, denoting the image on the right side of this merge region as the
  621. image merge region that may be trimmed.
  622. Home/End keys may be used to change the image section to be trimmed (home is
  623. to the left). The cursor keys may be used to then move the selected region.
  624.  
  625. Note that the up/down cursor keys must shift the whole scanned region (which
  626. may affect 2 merge boundaries). The left/right cursor keys only shift the
  627. image at the edge that is selected (i.e. image dots are added or subtracted at
  628. the border). The movement limits are determined by the limits of the scanned
  629. images.
  630.  
  631. The viewed merge regions may be shifted left/right (if there are >3 input
  632. image files) by use of the Alt-V key followed by home or end keys. Home will
  633. shift the viewed regions 2 regions over to the left (or 1 if that is the max
  634. shift). The end key will do likewise in the right direction.
  635.  
  636.  
  637. Unrotated Image User Commands:
  638.  
  639. These four cursor commands will force a restart of the merge process. In
  640. general you should reach the best whole image alignment as early as possible
  641. in the merge process to eliminate having to restart merging.
  642.  
  643. Cursor Up/Down:   Will shift the selected image section up/down.
  644.      While moving an image section up, you may reach the bottom limit of the
  645.      input image. A 2nd menu will pop up asking you if you wish to exceed the
  646.      limit. Doing so may add a black area to the bottom of the composite
  647.      image corresponding to this section. This can be removed by inserting
  648.      lines manually when you get to the bottom of the images in the merge
  649.      process.
  650.  
  651. Left/Right cursor:Move the selected image left/right with respect to the
  652.                     selected merge boundary.
  653.  
  654. '1'..'9':  Set size of image movement performed by cursor keys. Size is in
  655.            number of lines or dots the selected image section is shifted by
  656.            each cursor key entry. Program starts with a value=1.
  657.  
  658. Home/End: Select which viewed merge regions are modified. Home moves to the
  659.           left, End to the right.
  660.  
  661. <cr>: Ends user input and continues the merging process. If no user
  662.       modification is has been initiated on the currently displayed image
  663.       region, then the program proceeds to the next region. Otherwise,
  664.       the current region is redrawn or the merge process restarts at the
  665.       top (the latter occurs when whole image section motion is inputted
  666.       thru the cursor keys).
  667.  
  668. <Insert> (<Delete>): Will allow user to insert or (delete) individual lines
  669.                      in an image region in view. The region to modify is
  670.                      previously selected by home/end keys.
  671.                      A 2nd menu will appear.
  672.      Command options:
  673.        PgUp/PgDn: Moves line change marker up/down 20 lines.
  674.        SpaceBar : Moves marker down 1 line.
  675.        BkSpace  : Moves marker up 1 line.
  676.           '+'   : Performs desired modification at marker location
  677.           '-'   : Remove the chosen catagory of modification at the marker
  678.                   (or the nearest modification below the marker)
  679.       <cr> <Esc>: Ends insert or delete process. Return to main menu.
  680.  
  681.            'T'  : Remove the top most (of current display)  entry in the
  682.                   catagory you are in (i.e. insert or delete)
  683.            'B'  : Remove the bottom most (of current display) entry in the
  684.                   catagory you are in.
  685.  
  686.       These 3 commands operate on both insert and delete entries (i.e. it
  687.       does not depend on which catagory you are in):
  688.        'U': Remove all insert & delete entries from the currently viewed
  689.             images.
  690.        'P': Restore all insert & delete entries from the currently viewed
  691.             images. This reverses either user removal or automatic removal
  692.             when a new automatic merging process was initiated.
  693.        'S': If there is < 5 insert/delete entry spaces left, delete the 1st
  694.             entry (i.e. the 1 closest to the very top of the entire merged
  695.             image). As long as the affected region of the image is no longer
  696.             visible, this command will NOT affect the outputted image. Rather
  697.             it frees up modification entry space if you are running out when
  698.             you are near the bottom of a merged image. If you do restart the
  699.             merge process at the top, then the deleted entry and its
  700.             modification will be lost.
  701.  
  702.  
  703. <Alt-V>: Change the merged regions shown. This command is only valid if more
  704.          than 2 merge regions exist. A 2nd menu will appear.
  705.    Choose: Home/End=>View merge regions to the left/right of the currently
  706.                      viewed regions. If possible, two new regions will be
  707.                      shown; otherwise, one new region will be shown in the
  708.                      direction of shift (Home shifts left, End shifts
  709.                      right).
  710.  
  711. <Alt-T>: Change automatic trimming parameters. A 2nd menu will appear.
  712.        See below.
  713.  
  714.  'B' : Rebuild the entire merged image without viewing until the current
  715.        view region is reached. Useful if rebuilding is required by previous
  716.        trim commands.
  717.  
  718.  'R' : Restart the merge process with full view, modification capability.
  719.  
  720.  'G' : Continue the merge process without continuing to view or trim
  721.         (applicable only if no image modifications have just been made to
  722.          the viewed image).
  723.  
  724.  'H' : Toggle display of general help menu with auto trim status. When
  725.        starting MergeIt, default is to display whenever possible. Toggle will
  726.        cause general help menu to display only when an inappropriate key is
  727.        pressed and auto trim status only when an auto trim parameter is
  728.        changed.
  729.  
  730.                           On-Line Menu Help
  731.  
  732. Appropriate user inputs are shown if the three files with extensions ".ras"
  733. are located in the directory where MergeIt is. If the files are not present,
  734. a low beep will sound when they are searched for (i.e. when a new menu would
  735. be shown). Unless toggled off, whenever a merged image region is displayed,
  736. the lower region of the screen will show appropriate input commands with the
  737. bottom line showing the current automatic trimming status. If an appropriate
  738. command is entered which activates a secondary series of commands, this new
  739. menu will be displayed. Ending this secondary input process will bring the
  740. general menu back. On the right side of the first line of the general menu
  741. shows a "triangle symbol=#". This "#" is the size of the user image movement
  742. produced by cursor key input. This movement is measured in dots or lines of
  743. image shift.
  744.  
  745. The automatic trimming status line will change whenever the user causes a
  746. parameter change in this process. The status line shows whether auto trimming
  747. is ON, OFF, or disabled (never initialized). If auto trimming is ON or OFF,
  748. then the layout of the full line will is:
  749.  
  750. AutoTrim :ON  [2]        Viewed Image Trim:   Now[ 33]  Redo NEW
  751.           ^    ^                                    ^         ^
  752.   Status of    Max line shift            # of lines added/    Auto Trim will
  753.   Process      when auto trimming        deleted to image     be redone
  754.  
  755. The trimming status of the currently viewed changeable image(s) may also
  756. be "NO" if no auto trimming changes were made.
  757. The trim status is also shown for what will happen if the current view
  758. region is redisplayed. In addition to the On/Off states which are possible
  759. for the current view, the "Redo" status may be NEW (if an auto trimming
  760. reanalysis will be done on the currently viewed merge region). Auto trimming
  761. reanalysis is automatically initiated by whole image movement by the user
  762. (with the cursor keys).
  763.  
  764.                    Automatic Trimming Process
  765.  
  766. It is important to distingush auto trimming from auto merging. The latter is
  767. alignment of adjacent whole scanned images by means of black reference blocks
  768. located across merged regions on the top edge of each scanned image. Each
  769. image is shifted as a whole with respect to an adjacent image.
  770. In contrast, auto trimming attempts to compensate for the small, inevitable
  771. errors in image registration as one moves a hand scanner across a piece of
  772. paper. That is, over the course of a few inches of travel, only 198 lines may
  773. be generated during the first inch, 203 lines during the next inch, etc.
  774. When attempting to merge images, these errors will appear as varied
  775. misalignment at the borders of merged image sections-even if the beginning
  776. image edges are aligned. Auto trimming starts at the beginning of the image
  777. and works down in groups of 16-20 image lines (about 0.1" at 200 dpi),
  778. attempting to compensate for this mis-registration by inserting/deleting lines
  779. as required to preserve alignment across the merged boundaries. MergeIt is
  780. capable of performing up to 200 insert/delete line operations.
  781. When auto trimming is performed on a displayed image region, any user
  782. modifications of line insertion or deletion are surpressed when the image is
  783. redrawn. These modifications may be restored through the insert/delete menu
  784. option "P", but only if no additional insert/delete modifications are made
  785. before the restoration.
  786.  
  787. Outline of automatic trimming process:
  788. 1) The process starts with the first 16-20 lines generated by the hand scanner
  789.   (top of an unrotated image, the left edge of a rotated image).
  790. 2) The initial alignment of black and white dots across boundaries is checked.
  791.    If it is perfect, nothing more is done.
  792. 3) If not perfect, the image line group (of 16-20 lines) is shifted along the
  793.    boundary, in one direction, one line at a time and a measure of how many
  794.    lines are aligned is made. Modification by inserting lines is tested first.
  795.    If an unrotated image is being merged, then up to two line shifts are made.
  796.    For a rotated image, the maximum shift is user specified from 1-9 lines. If
  797.    the best alignment found is better than no shifting by a user defined
  798.    number of lines, then this insertion of lines is done.
  799. 4) If the best alignment is not good enough, the shifting and alignment
  800.    measurement procedure is performed in the other direction, deletion. A
  801.    similar alignment criteria test is performed. If it also fails, then no
  802.    deletion of lines is performed.
  803. 5) The next 16-20 lines are selected and steps #2..#4 are performed. If
  804.    this is an unrotated image merge, then this process is repeated until the
  805.    next viewed image group of 200 lines is built and displayed.
  806.    For rotated merging, this process is repeated until the right edge of the
  807.    merged boundary is reached. Then the top 100 lines of the scanned image is
  808.    modified and displayed below the bottom edge of the previous image.
  809.  
  810. Control of auto trimming in Initial Values File (line#4, values 3 and 4):
  811.   Automatic trimming may be disabled when starting MergeIt by setting the
  812.   alignment threshold=0 in the initial values file. Merging will be speeded up
  813.   somewhat and a little less memory will be needed by MergeIt. BUT the user
  814.   will NOT be able to activate auto trimming.
  815.   Automatic trimming may be enabled by setting this threshold<>0. If it is <0,
  816.   then auto trimming will initially be turned OFF (but readily turned ON by
  817.   the user). A value >0 will turn auto trimming ON from the start.
  818.  
  819. The maximum line shift when doing rotated image merging must be specified
  820. even if unrotated merging is chosen later. A typical value is 2-3. A high
  821. value increases the possiblity of an erronous auto trim adjustment (see below
  822. under hints). It may be set from 1-9.
  823.  
  824.  
  825. User Commands:
  826. When doing unrotated image merging, user input is possible when viewing a
  827. merged region.
  828. For rotated merging, user input is possible when the top edge of a rotated
  829. image is in view (which is being merged and trimmed to the bottom edge of a
  830. previous rotated image that is also in view).
  831.  
  832. From the general menu, <Alt-T> (i.e. alter trimming) will bring up a menu of
  833. possible auto trimming commands. It is important to distingush between turning
  834. auto trimming on/off and deleting/restores its effects on a viewed image.
  835. The former only takes effect the NEXT time an auto trimming line analysis
  836. is performed, the latter affects the implementation (and viewing) of the
  837. results from the LAST auto trimming analysis. Initiating auto trim causes
  838. the process to be performed (or reperformed) on the currently viewed image.
  839.  
  840.     'Y' : Turn ON  auto trim process (does NOT affect current view/images)
  841.     'N' : Turn OFF auto trim process (does NOT affect current view/images)
  842.     'I' : Initiate (or reinitiate) auto trim process on current display.
  843.           This will surpress any user insert/delete modifications. (These
  844.           modifications may be restored. See Insert/Delete commands above.)
  845.           If OFF, the auto trim process will be turned ON.
  846.     'U' : Eliminate present auto trim effects on currently displayed image
  847.     'P' : Restore present auto trim effects on currently displayed image
  848. Esc <cr>: Do nothing (exit this auto trim input process)
  849.  
  850. For rotated merging process only:
  851. '1'..'9': Choose max vert line shift while trimming each 16 line image
  852.           region (Note that the top of the 1st image is not merged so no
  853.           trimming is done but the parameters may still be changed).
  854.  
  855. If auto trimming is turned on, then the analysis is performed whenever a
  856. new merged region is brought into view or whenever one image region is moved
  857. as a WHOLE with respect to another region. Whole image movement is performed
  858. with the cursor up/down and left/right keys.
  859. Individual image line insertion/deletion by the user in the viewed images
  860. does not cause an auto trimming reanalysis. (User line insertion/deletion
  861. is not seen by the auto trim process). If a reanalysis is done after the
  862. user does manual line insertion/deletion, these manual modifications are
  863. initially surpressed in the rebuilt and displayed image. To restore the
  864. manual insertion/deletions, after doing the reanalysis, go into the insert
  865. or delete menu and enter "P" to restore previous entries. Note that you must
  866. do this BEFORE adding new insert/delete entries.
  867.  
  868. Hints:
  869. Auto trimming works best when there is continuing image lines running across
  870. the merge boundaries. If many inches of scanned image boundaries are solid
  871. black or white, then auto trim may not be able to make enough adjustment when
  872. an edge is finally reached. In this case, it is probably best to use a rotated
  873. image merge process and set the shift maximum high (erronous adjustments won't
  874. be made in solid black or white regions anyway). Note that you can change this
  875. maximum shift value as you move from one merge boundary to another if the
  876. quality of the image at these boundaries is different. It is probably not a
  877. good practice to set the maximum shift high all the time since this can lead
  878. to large erroneous alignment adjustments. If an image has some cross boundary
  879. detail every inch or so then a maximum shift of about 2-3 seems to work well.
  880. When working with curved image lines/areas across boundaries, it is important
  881. that adjacent scanned images have the correct amount of overlap (i.e. position
  882. towards or away from each other) before trying to use auto trim to improve
  883. alignment. (The tutorial demonstrates this when merging within an egg-like
  884. object.)
  885. If you are just merging scanned images from a typed page where you can put
  886. your boundaries between typed lines, then disable auto trimming. Auto trimming
  887. will do nothing with white boundary regions and just slow the merging process
  888. down.
  889. When doing rotated image merging, even though no auto trimming can be done at
  890. the top edge of the first image, the user can still modify auto trim
  891. parameters. In particular, when doing any manual merging it is probably best
  892. to start with auto trimming enabled but off. This will enable manual alignment
  893. between images without the confounding adjustments of auto trimming. After
  894. arriving at a good positioning of adjacent images in the merge region where
  895. the hand scanning started, (i.e. at the top of the screen for an unrotated
  896. merged image or at the left side for a rotated one), turn on auto trim and
  897. have it analyze the boundary region and make alignment adjustments.
  898.  
  899.                           Memory Issues
  900.  
  901. The program occupies about 140K bytes. A programming criterion was to be able
  902. to handle a rotated merge of scanned image sections that are 4" wide and 9"
  903. long at 300DPI in the 640K DOS space. This requires 405K bytes to store the
  904. image to be rotated, which requires at least 545K bytes of free memory, not
  905. an impossible goal. If the scanned images do not require rotation when
  906. merging, then memory requirements are much less and won't be a concern. If
  907. there is insufficient memory available for rotation, then you may specify
  908. storage to disk (in the same directory as the other image files). For the
  909. sake of time (and your hard disk!) I recommend you do this on a RAM disk.
  910. First put the scanned images to be merged on the RAM disk before starting
  911. MergeIt.
  912.  
  913. Normally, when MergeIt does a rotated merge, it stores the complete bottom
  914. lines of each image (sections of which are viewed) so that the user may
  915. change the merged sections being viewed even when the top of the next image
  916. is being processed. If memory is tight, MergeIt may ask you if you want this
  917. temporary storage to be done to disk. If you say "no", you will only be able
  918. to change the merged sections to view when just the bottom edge of a scanned
  919. image section is visible, i.e. once the top of the next image section is
  920. visible, you can't change what regions you see.
  921.  
  922.                      Fatal Program Error Message Codes
  923.   2: File not found
  924.   3: DOS directory Path invalid
  925.   4: Too many files open. Perhaps the config.sys file doesn't specify enough
  926.      open files. Set to "Files=20".
  927.   5: File could not be opened, perhaps directory is full.
  928. 101: File could not be written to since the disk is full.
  929. 106: Numerical entry in initial values file is incorrect.
  930. 203: Insufficient memory to store image.
  931.  
  932.  -3: Graphics error, driver file not found. Appropriate file (Herc.BGI,
  933. EgaVga.BGI,...) is not in directory where executable program is located.
  934.  
  935.     Integrating Scanning Operation and Merging (Registered users only)
  936.  
  937. ScanIt is a small shell program to integrate the scanning and merging process.
  938. It executes the necessary image scanning utility to create the image
  939. section files and then runs "MergeIt" to put the image sections together.
  940. The process may be repeated for up to 100x, generating merged image files
  941. with names such as page1.pcx,page2.pcx,...
  942. While designed around the Logitech ScanMan DOS scanning utility, it was
  943. written to be flexible enough for adaptation. It MUST be started in the
  944. directory where itself and ALL executable files are located. The
  945. initial values file may be in a different directory. The generated
  946. image files may be stored in yet another directory.
  947.  
  948. For full documentation, see "ScanIt.Doc".
  949.  
  950. For the LogiTech Scanner, the DOS scan utility is called Scan.Exe
  951. and is run from the DOS command line with a line such as:
  952.             Scan.Exe scan1.pcx 4IN 9IN
  953. where the scanned image is written to the pcx format file "scan1.pcx"
  954. with a width of 4 in. and a length of 9 in.
  955.  
  956. Typical Input Line for use with this scan utility
  957. (best written in a batch file):
  958.   Scanit.exe Mergeit.exe /image3.ini Scan.exe [filename] [width]IN 9IN
  959.  
  960. The phrase "[filename]" is the location where ScanIt will place the scanned
  961. image filename to be created by scan.exe. when it executes the utility.
  962. The phrase "[width]" is the location where ScanIt will place the desired
  963. width to scan (in inches) when it executes scan.exe.
  964. Both of these entries are generated from the initial values file.
  965.  
  966. Typical Batch File:
  967. cd D:\PAINT
  968. D:
  969. Scanit.exe mergeit.exe /e:\scan\image3.ini Scan.exe [filename] [width]IN 9IN
  970.  
  971.                             Legal Notices
  972.  
  973. MergeIt  COPYR. 1991 Dennis DiBart ALL RIGHTS RESERVED
  974.  
  975. Disclaimer of Warranty:
  976. This software and documentation are sold "as is" and without warranties as to
  977. performance of merchantability or any other warranties whether expressed
  978. or implied. Because of the various hardware and software environments
  979. into which this program may be put, no warranty of fitness for a particular
  980. purpose is offered.
  981.  
  982. Good data processing procedure dictates that any program be thoroughly
  983. tested with non-critical data before relying on it.  The user must assume
  984. the entire risk of using the program.  Any liability of the seller will be
  985. limited exclusively to product replacement or refund of purchase price.
  986.  
  987.  
  988.